from longguo_ui.base.base import BasePage
from longguo_ui.config.locators import UserPayMentPageLocators
import time

class UserPayMentPage(BasePage):
    """
    用户支付配置页面操作类，继承自基础页面类
    封装用户支付配置相关的页面操作，包括添加支付配置、绑定银行卡等流程
    """

    def __init__(self, driver):
        """
        初始化用户支付配置页面实例

        :param driver: 浏览器驱动实例，用于页面交互
        """
        super().__init__(driver)

    def user_payment_configuration(self):
        """
        执行用户支付配置完整流程
        步骤包括：进入用户支付配置页面、添加配置信息、提交表单、查询配置结果、绑定银行卡
        """
        # 点击支付管理菜单（展开子菜单）
        self.click(UserPayMentPageLocators.PAYMENT_MANAGEMENT)
        time.sleep(1)  # 等待菜单展开

        # 点击进入用户支付配置页面
        self.click(UserPayMentPageLocators.USER_PAYMENT_CONFIGURATION)
        time.sleep(1)  # 等待页面加载

        # 点击添加支付配置按钮
        self.click(UserPayMentPageLocators.ADD_PAYMENT_CONFIGURATION)
        time.sleep(1)  # 等待表单加载

        # 输入用户编号
        self.send_keys(UserPayMentPageLocators.USER_CODE, "520")
        time.sleep(1)  # 等待输入完成

        # 输入用户名
        self.send_keys(UserPayMentPageLocators.USER_NAME, "江潇")
        time.sleep(1)  # 等待输入完成

        # 输入支付产品编号
        self.send_keys(UserPayMentPageLocators.PAYMENT_PRODUCT_CODE, "55")
        time.sleep(1)  # 等待输入完成

        # 输入支付产品名称
        self.send_keys(UserPayMentPageLocators.PAYMENT_PRODUCT_NAME, "柚子")
        time.sleep(1)  # 等待输入完成

        # 下拉选择收款方式（PLAT_RECEIVES表示平台收款）
        self.select_option_by_value(UserPayMentPageLocators.COLLECTION_METHOD, "PLAT_RECEIVES")
        time.sleep(1)  # 等待选择完成

        # 输入风险预存期（单位：天）
        self.send_keys(UserPayMentPageLocators.RISK_PRE_STORAGE_PERIOD, '1')
        time.sleep(1)  # 等待输入完成

        # 勾选是否自动结算选项
        self.click(UserPayMentPageLocators.IS_AUTO_SETTLEMENT)
        time.sleep(1)  # 等待勾选生效

        # 下拉选择安全等级（MD5加密方式）
        self.select_option_by_value(UserPayMentPageLocators.SAFE_LEVEL, 'MD5')
        time.sleep(1)  # 等待选择完成

        # 输入IP白名单（此处填写"无"表示不限制IP）
        self.send_keys(UserPayMentPageLocators.IP_WHITE_LIST, '无')
        time.sleep(1)  # 等待输入完成

        # 点击提交按钮，提交支付配置表单
        self.click(UserPayMentPageLocators.SUBMIT)
        time.sleep(1)  # 等待提交处理

        # 点击确认按钮，确认提交操作
        self.click(UserPayMentPageLocators.CONFIRM)
        time.sleep(1)  # 等待确认完成

        # 点击取消按钮，关闭表单弹窗
        self.click(UserPayMentPageLocators.CANCEL)
        time.sleep(1)  # 等待弹窗关闭

        # 在查询框输入用户名，准备查询配置结果
        self.send_keys(UserPayMentPageLocators.USER_NAME_INPUT, '江潇')
        time.sleep(1)  # 等待输入完成

        # 点击查询按钮，执行查询操作
        self.click(UserPayMentPageLocators.SEARCH)
        time.sleep(3)  # 等待查询结果加载

        # 点击绑定出款银行卡按钮，进入银行卡绑定页面
        self.click(UserPayMentPageLocators.BIND_WITHDRAWAL_BANK_CARD)
        time.sleep(1)  # 等待页面跳转

        # 输入用户编号（银行卡绑定关联的用户）
        self.send_keys(UserPayMentPageLocators.USER_CODE_ID, '56')
        time.sleep(1)  # 等待输入完成

        # 下拉选择银行名称（ICBC表示工商银行）
        self.select_option_by_value(UserPayMentPageLocators.BANK_NAME, 'ICBC')
        time.sleep(1)  # 等待选择完成

        # 下拉选择银行账户类型（PUBLIC_ACCOUNT表示对公账户）
        self.select_option_by_value(UserPayMentPageLocators.BANK_ACCOUNT_TYPE, 'PUBLIC_ACCOUNT')
        time.sleep(1)  # 等待选择完成

        # 输入银行开户名
        self.send_keys(UserPayMentPageLocators.BANK_ACCOUNT_NAME, '江潇')
        time.sleep(1)  # 等待输入完成

        # 输入银行账号
        self.send_keys(UserPayMentPageLocators.BANK_ACCOUNT, '6228480000000000')
        time.sleep(1)  # 等待输入完成

        # 输入证件号码（此处为示例身份证号）
        self.send_keys(UserPayMentPageLocators.IDENTIFICATION_NUMBER, '123456789012345678')
        time.sleep(1)  # 等待输入完成

        # 输入手机号码
        self.send_keys(UserPayMentPageLocators.PHONE_NUMBER, '12345678901')
        time.sleep(1)  # 等待输入完成

        # 输入开户行详细地址
        self.send_keys(UserPayMentPageLocators.OPENING_BANK_ADDRESS, '上海')
        time.sleep(1)  # 等待输入完成

        # 点击银行卡信息表单的取消按钮，关闭表单
        self.click(UserPayMentPageLocators.BANK_SUBMIT)
        time.sleep(3)  # 等待操作完成